約 3,764,732 件
https://w.atwiki.jp/swdp2p2/pages/17.html
コラムテーブルの中身を表示する データベースクラスを作ってみる接続の手間を省く 切断の処理も省く 使用する処理を実装する コラム テーブルの中身を表示する PHPを使ってMySQLのあるテーブルの内容を出力するというプログラムを書いてみたいと思います。 データベースの仕様として、テーブル名はmember、キーは、id(主キー), name, passの3つとします。 まず最初にデータベースにテーブルを作成します。以下のようなSQL文を入力します。 CREATE TABLE IF NOT EXISTS `test`.`member` ( `id` INT NOT NULL , `name` VARCHAR(45) NOT NULL , `pass` TEXT NOT NULL , PRIMARY KEY (`id`) ) ENGINE = InnoDB 次に、作成したテーブルにデータを挿入していくのですが、今回は試用ですので、直にSQL文で打ち込みます。 insert into member value(1, 'tester1', 'hogehoge1'); insert into member value(2, 'tester2', 'hogehoge2'); insert into member value(3, 'tester3', 'hogehoge3'); insert into member value(4, 'tester4', 'hogehoge4'); insert into member value(5, 'tester5', 'hogehoge5'); テーブルにデータが挿入されているか確認をします。 mysql select * from member; +----+---------+-----------+ | id | name | pass | +----+---------+-----------+ | 1 | tester1 | hogehoge1 | | 2 | tester2 | hogehoge2 | | 3 | tester3 | hogehoge3 | | 4 | tester4 | hogehoge4 | | 5 | tester5 | hogehoge5 | +----+---------+-----------+ 5 rows in set (0.00 sec) これでMySQL側の作業は終了です。 さて、今度はPHPでプログラムを書いていきたいと思います。 内容の表示であるView部分はSmartyテンプレートを使用します。 今回使用したテンプレート(ShowSqlInfo.tpl)の中身は以下になります。 !DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http //www.w3.org/TR/html4/loose.dtd" html head meta http-equiv="Content-Type" content="text/html; charset=windows-31j" META http-equiv="Content-Style-Type" content="text/css" title データベースの内容 /title /head body h2 データベースの詳細 /h2 table border="1" tr td id /td td user /td td pass /td /tr {* データの挿入 *} {foreach from=$data key="key" item="value" name="list"} tr td {$value- GetId()} /td td {$value- GetUserName()} /td td {$value- GetPass()} /td /tr {foreachelse} {/foreach} /table /body /html 最後に、PHPにおける処理部分ですが、データベースの内容を示すクラスを一つ定義しました。 あとは、PHPでやった内容と変わらず、while文ですべての内容を取得しています。 ?php // MySqlの内容を表示するphp require_once "MDB2.php" ; require_once "DBInfo.php"; require_once "Smarty/smarty.class.php"; // Smartyオブジェクトの生成 function CreateSmartyObj() { $smarty = new Smarty(); // パスの設定 $smarty- template_dir = "template"; // テンプレートディレクトリのパス $smarty- compile_dir = "compile"; // コンパイルディレクトリのパス return $smarty; } // データベースへ接続 $mdb2 = MDB2 connect( "mysqli //ユーザ名 パスワード@ホスト/member" ); // エラー処理 if(PEAR isError($mdb2)) { die($mdb2- getMessage()); } // クエリ実行 $sql = "select * from member"; $res = $mdb2- query($sql); // エラー処理 if(PEAR isError($res)) { die($res- getMessage()); } $ary = array(); while( ( $row = $res- fetchRow() ) ) { $tmp = new CDBInfo(); $tmp- SetId($row- id); $tmp- SetUserName($row- name); $tmp- SetPass($row- pass); array_push($ary, $tmp); } // データベースへの接続を切る $mdb2- disconnect(); $smarty = CreateSmartyObj(); $smarty- assign("data", $ary); $smarty- display("ShowSqlInfo.tpl"); ? DBInfo.php ?php class CDBInfo { protected $m_Id;// ユーザid protected $m_Name;// ユーザ名 protected $m_Pass;// パスワード function __construct() { $m_Id = 0; $m_Name = NULL; $m_Pass = NULL; } public function SetId($id) { $this- m_Id = $id; } public function GetId() { return $this- m_Id; } public function SetUserName($name) { $this- m_Name = $name; } public function GetUserName() { return $this- m_Name; } public function SetPass($pass) { $this- m_Pass = $pass; } public function GetPass() { return $this- m_Pass; } } ? データベースクラスを作ってみる PEARのMDB2ライブラリを用いたデータベースを扱う簡易クラスを作ってみたいと思います。 いちいち、エラーチェックや決まった変数を毎度作成するのは面倒というものです。 こういった使用するものが決まったものの集まりをクラスにしてしまいましょう。 毎回出てくる変数としては、データベースに接続する変数($mdb2、$db等)と、クエリの結果を受け取る変数($res等)をクラス内に定義してしまいましょう。 class DBAccess { protected $m_Db;// データベース接続変数 protected $m_Result;// クエリ用変数 } protectedすることでクラスのメンバ変数は外部からアクセスできないようになっています。(継承先は除く) 接続の手間を省く まず、ログインする関数を作りましょう。 定数として以下のものを用意します。 const m_Sql = "mysqli";// 使用するSQL const m_User = "ユーザ名";// ユーザ名 const m_Pass = "パスワード";// パスワード const m_Host = "localhost";// ホスト名 const m_DbName = "DB名";// データベース名 const m_TblName= "テーブル名";// テーブル名 クラス内の定数にはself m_Sqlのようにself を用いアクセスします。 では、コネクト関数を実装します。 // データベース接続 public function Connect() { // 接続文字列を作成 $str = sprintf("%s //%s %s@%s/%s", self m_Sql, self m_User, self m_Pass, self m_Host, self m_DbName); // 接続処理 $this- m_Db = MDB2 connect($str); // エラー処理 if( PEAR isError( $this- m_Db ) ) { exit("以下の接続が失敗しました br " .$str); } } このコネクト関数をコンストラクタで呼び出してやれば、クラスを生成するだけで接続でき便利です。 // コンストラクタ function __construct() { // メンバ変数の初期化 $this- m_Db = NULL; $this- m_Result = NULL; // 接続 $this- Connect(); } 切断の処理も省く 上記の接続と同様ですので、プログラムのみ示します。 // データベース切断 public function DisConnect() { $this- m_Db- disconnect(); } // デストラクタ function __destruct() { if($this- m_Db != NULL) { $this- DisConnect(); } } 使用する処理を実装する 最低限ということで、クエリを実行する関数(Query)、レコードを取得する関数(FetchRow)、クエリ結果のレコード数を取得する関数(numRow)を用意しました。 実装は非常に簡単です。今までやってきたことをクラス内に内包しているだけです。 // レコードを取得し返す public function FetchRow() { $this- Error(); return $this- m_Result- fetchRow(MDB2_FETCHMODE_OBJECT); } // クエリ結果のレコード数を返す public function numRows() { $this- Error(); return $this- m_Result- numRows(); } // クエリ実行 public function Query($sql) { // クエリの実行し結果を取得 $this- m_Result = $this- m_Db- query($sql); // エラー処理 if( PEAR isError($this- m_Result) ) { exit("以下のクエリが失敗しました br " .$sql); } } 今回作成したプログラムは以下になります。 DBAccess.php
https://w.atwiki.jp/wiki8_hime/pages/42.html
環境;FreeBSD6.3 コピペパーツ 時計あわせ ntpdate -s -b 133.100.11.8 カーネルチューニング ===/boot/loader.conf=== echo /boot/loader.conf; echo kern.ipc.nmbclusters=32768 /boot/loader.conf; echo kern.ipc.maxsockets=32768 /boot/loader.conf; echo accf_http_load="YES" /boot/loader.conf; echo beastie_disable="YES" /boot/loader.conf; echo kern.maxssiz="134217728" /boot/loader.conf; echo kern.dfldsiz="1073741824" /boot/loader.conf; echo kern.maxdsiz="1073741824" /boot/loader.conf ===/etc/sysctl.conf=== echo /etc/sysctl.conf echo net.inet.tcp.inflight_enable=1 /etc/sysctl.conf echo kern.maxfiles=16384 /etc/sysctl.conf echo kern.maxfilesperproc=14745 /etc/sysctl.conf echo kern.ipc.somaxconn=4096 /etc/sysctl.conf echo kern.ipc.maxsockbuf=1048576 /etc/sysctl.conf ===前準備 ~ パッケージからインストール -r するとリモートからとってくるよ編~ === pkg_add -r perl pkg_add -r rsync pkg_add -r cvsup-without-gui pkg_add -r zip pkg_add -r unzip pkg_add -r wget pkg_add -r curl pkg_add -r libxml2 pkg_add -r expat2 pkg_add -r cclient pkg_add -r tidy-lib pkg_add -r freebsd-update pkg_add -r jpeg pkg_add -r png pkg_add -r freetype pkg_add -r freetype2 pkg_add -r gd pkg_add -r mhash pkg_add -r bsdsar pkg_add -r openssl ===cvsup=== cvsupは vi /usr/share/examples/cvsup/ports-supfile で host=backup1.atwiki.jp に設定。 rehash でパスを再読み込み ==cvsupでportsを更新== cvsup /usr/share/examples/cvsup/ports-supfile アパッチ fetch ftp //ftp.ring.gr.jp/pub/net/apache/httpd/apache_1.3.39.tar.gz tar zxvf apache_1.3.39.tar.gz cd apache_1.3.39 setenv EXTRA_CFLAGS -DFD_SETSIZE=16384 ./configure --prefix=/usr/local/apache13 --enable-module=most --enable-module=so --enable-shared=max --enable-suexec --suexec-caller=www --suexec-logfile=/usr/local/apache13/logs/suexec_log --suexec-uidmin=10000 --suexec-gidmin=10000 make make install mod_layout改造版をどっかからとってくる。 tar zxvf mod_layout cd mod_layout-3.4 vi Makefile make make install viで /usr/local/apache13/bin/apxs 開いて、 #!/usr/local/bin/perl 追加。 Mysql cd /usr/ports/databases/mysql41-client/ make WITH_CHARSET=sjis WITH_XCHARSET=all make install cd /usr/ports/databases/mysql41-server/ make make install /etc/rc.confに追加 mysql_enable="YES" mysql_dbdir="/usr/local/mysql_data" PHP fetch http //jp.php.net/get/php-5.2.6.tar.gz/from/this/mirror mv mirror php-5.2.6.tar.gz tar zxvf php-5.2.6.tar.gz cd php-5.2.6/ ./configure --with-apxs=/usr/local/apache13/bin/apxs --enable-mbstring --with-openssl --with-tidy --with-gd --with-jpeg-dir=/usr/local --with-zlib --enable-mbregex --enable-gd-jis-conv --with-freetype-dir=/usr/local/ --enable-zend-multibyte --enable-mbstring=japanese --enable-ftp --with-png-dir=/usr/local --enable-memory-limit --with-xmlrpc --enable-imap --with-mysql=/usr/local --with-pdo-mysql=/usr/local --enable-iconv --with-gettext --with-curl --with-mh make make install proftpd cd /usr/ports/ftp/proftpd make (defolut + quota + mysql) make install /etc/rc.confに追加 proftpd_enable="YES" APC ===autoconf/aotoheader=== cd /usr/ports/devel/autoconf213/ make make install ln -s /usr/local/bin/autoconf213 /usr/local/bin/autoconf ln -s /usr/local/bin/autoheader213 /usr/local/bin/autoheader ===APC=== fetch http //pecl.php.net/get/APC-3.0.12p2.tgz tar zxvf APC-3.0.12p2.tgz cd APC-3.0.12p2 phpize ./configure --enable-apc-mmap--with-apxs --with-php-config=/usr/local/bin/php-config make make install mod_bandwidth.c mkdir tmp cd tmp/ fetch ftp //ftp.cohprog.com/pub/apache/module/1.3.0/mod_bandwidth.c /usr/local/apache13/bin/apxs -c mod_bandwidth.c /usr/local/apache13/bin/apxs -i -a mod_bandwidth.so /usr/local/apache13/bin/apachectl restart httpd.confを設定する前に作業デレクトリを作成。 mkdir /usr/local/apache13/bandwidth mkdir /usr/local/apache13/bandwidth/link mkdir /usr/local/apache13/bandwidth/master chown -R www www /usr/local/apache13/bandwidth mod_limitipconn fetch http //dominia.org/djao/limit/mod_limitipconn-0.04.tar.gz tar zxvf mod_limitipconn-0.04.tar.gz cd mod_limitipconn-0.04 vi Makefile APXS=/usr/local/apache13/bin/apxs ←apxsをフルパスで指定 make make install 権限変更 権限変更750 /root/ /usr/local/apache13/conf/* /usr/local/etc/ /usr/local/etc/proftpd.conf /usr/home/* ディレクトリ設置 /usr/local/www/以下 /usr/local/www/htdocs/_/ /root/_atpages/ python インストール cd /usr/ports/lang/python25/ make make install ruby インストール cd /usr/ports/lang/ruby18/ make make install * 導入ずみ CGI グループ追加 pw groupadd -n pages -g 10000 pf mysql設定 analog /usr/local/www/session/ 設置 /usr/local/www/skel/ 設置 /usr/local/lib/php.ini 設置 /etc/crontab 編集 /etc/newsyslog.conf 編集 モジュール追加 imagemagick perl python ruby
https://w.atwiki.jp/nicepaper/pages/116.html
PHPで複数フィールドをPDOを使い、MySQLにてアップロードする方法についてまとめていきたいと思います。7月2日記事 目次 概要 コード(データベース文字コードがEUC-JPで、ファイルがUTF-8の場合) コード(データベース文字コードがUTF-8で、ファイルがUTF-8の場合) 概要 一つずつ実行していく感じです。pdoでそれぞれidとパラメータをチェックしていきます。 コード(データベース文字コードがEUC-JPで、ファイルがUTF-8の場合) ?php $dsn = mysql dbname= .DB_NAME. ;host= .DB_HOST. ;port= .DB_PORT. ; $user = DB_USER; $password = DB_PASSWORD; //データベース接続&接続しなければエラー try{ $dbh = new PDO($dsn, $user, $password); }catch (PDOException $e){ print( Connection failed .$e- getMessage()); die(); } //var_dump($_POST); $array = $_POST[data]; //ダンプ //var_dump($array); $stmt = $dbh- prepare("UPDATE table_name SET column1= column1, column2= column2 where id= id"); foreach ($array as $row= $value) { $stmt- bindValue( id , mb_convert_encoding($value[id],"EUC-JP","UTF-8"), PDO PARAM_INT); $stmt- bindValue( column1 , mb_convert_encoding($value[column1],"EUC-JP","UTF-8"), PDO PARAM_STR); $stmt- bindValue( column2 , mb_convert_encoding($value[column2],"EUC-JP","UTF-8"), PDO PARAM_STR); $stmt- execute(); if ($stmt- rowCount() === 1) { continue; } } ? 注意:データのエラーチェック、妥当性は省いています。 コード(データベース文字コードがUTF-8で、ファイルがUTF-8の場合) ?php $dsn = mysql dbname= .DB_NAME. ;host= .DB_HOST. ;port= .DB_PORT. ; $user = DB_USER; $password = DB_PASSWORD; //データベース接続&接続しなければエラー try{ $dbh = new PDO($dsn, $user, $password); }catch (PDOException $e){ print( Connection failed .$e- getMessage()); die(); } //var_dump($_POST); $array = $_POST[data]; //ダンプ //var_dump($array); $stmt = $dbh- prepare("UPDATE table_name SET column1= column1, column2= column2 where id= id"); foreach ($array as $row= $value) { $stmt- bindValue( id , $value[id], PDO PARAM_INT); $stmt- bindValue( column1 , $value[column1], PDO PARAM_STR); $stmt- bindValue( column2 , $value[column2], PDO PARAM_STR); $stmt- execute(); if ($stmt- rowCount() === 1) { continue; } } ? ダンプでまず受信できてるかどうかを確認してから、作成に取り掛かった方がやりやすいかもしれません。 PDOのbindValueについては、数字、文字列、URLなど色々な型があるので、型を調べて適切なbindValueを使いましょう 以上
https://w.atwiki.jp/yasrun/pages/204.html
BACK rootのパスワードを忘れてしまった! パスワードなしでログインできるモードというのがあるので、そのモードでMySQLを再起動する。 その後ログインしてパスワードを変更する。 《参考》 MySQL rootのパスワードを忘れてしまった場合の対処方法 http //sasuke.main.jp/mysqlrootpass.html ルートのパスワード設定 SET PASSWORD FOR root @ localhost = PASSWORD( hoge );
https://w.atwiki.jp/nicepaper/pages/10.html
PHPの関数や使い方やコードの説明をしていきます。 目次 PHPマニュアル、レファレンスの読み方(1) 文字列関係 PDOの利用 phpでMySQLへフォームを使って挿入 クロスサイトスクリプティング PHPでfilter_input関数を使い比べてみる。 phpのconfigファイル UTF-8の文字コードファイルだが、MySQLデータをEUC-jp(ujis)で保存する。 PHPでendifやendforを使った書き方 PHPでMySQLへ大量のデータ挿入 PHPでformでデータを多次元配列にして送信後、受け取る。 ループをしても意味ないレイアウトへMySQLからフィールド一覧を取り出して並べる方法 PHPで複数フィールドの一括アップデート方法 PHPで改行コードの数をカウントする。 フォーム入力確認ページの作り方 フォーム入力完了ページの作り方 PHPでPDOを使ってMySQLから1件だけフィールドを取得したい場合 PHPとMySQLでエンドユーザが見る更新情報一覧のページング機能を作る PHPの実行時間を計測する PHPで関数とメソッドの違いを理解する PHPでメニュー画面で現在のファイル名の場合のみ、選択状態にするCSSを追加する。 PHPのPDOでsetAttributeの意味を知る。 if関数を使ったプログラム PHPでランダムな数字の生成 windows8のXAMPPからSMTPの設定をし、gmailアカウントを使ってメールを送る方法 数字入力について考える1 php入門-while文を使って月の日付を全て表示させる- 数字入力について考える2 PHPで正規表現入門1 PHPで正規表現入門2 PHPで正規表現入門3 PHPで正規表現入門4 php入門-プログラムを駆使して表示させた日付をtableに埋め込んでいく- php入門-メソッドとクラス- php入門-array- php入門-foreach文- php入門-function関数- phpプログラミング入門-変数 phpプログラミング入門-定数- phpプログラミング入門-演算子 phpプログラミング入門-ifとswitch phpプログラミング入門-forとwhile phpプログラミング入門-GETメソッド- phpプログラミング入門-データベースにアクセスする(mysql_connect)を使用 phpプログラミング入門-データベースにアクセスする(PDO)を使用 PHPでバグの直し方、デバッグの仕方1 PHPでバグの直し方、デバッグの仕方2 UTF-8の文字コードとフォームから文字受け取りと文字(化け)表示 グローバル変数_サーバー変数_$_SERVERの使い方1 グローバル変数_サーバー変数_$_SERVERの使い方2 グローバル変数の$_SERVERの配列一覧 PHPでプログラム練習1 PHPでプログラム練習2 画像ファイルの情報を取得する PHPで画像を処理するライブラリ~GDライブラリ~ MD5のハッシュ化でソルトを行う。 パスワードを生成するプログラム PHPで文字を大文字小文字変換一覧 文字を取得するmb_substr関数 文字を置き換えるstr_replace関数 文字を分割するexplode関数 文字位置を検索するmb_strpos関数とmb_strrpos関数 filter_var()を使って値が整数かつ1以上20以下である事を検証 filter_var()を使って文字数が1以上20以下である事を検証 先頭をゼロで埋めて桁数を調整するsprintfとprintf関数 PHPで日時関連の関数まとめ $stmt- PHPで画像のサムネイル表示1 PHPで数学系関数まとめ1 PHPで画像のサムネイル作成 n進数変換プログラム エラー制御演算子 型の判定プログラム ファイルの書き込みに関する関数 MySQLとPHPとPDOを使い画像アップロードと挿入~プロトタイプ編~ PHPとGDライブラリを使い正方形のサムネイル画像を作る PHPのデータ型 色々なハッシュ化アルゴリズムとソルト化 php入門~フォームのエラー処理~ PDOとajaxでリアルタイム検索機能を作る~ajax入門1~ 文字列のエスケープ処理 PHPでCookieの発行1 PHPでajax通信入門1 ちょっとした掲示板 require文 クッキーの基本 正規表現で郵便番号、電話番号、メールアドレスをチェックする セッションについて オブジェクト指向でPHP PHPでオブジェクト指向入門1~クラスの定義~ PHPでオブジェクト指向入門2~プロパティ~ PHPでオブジェクト指向入門3~メソッド~ PHPでオブジェクト指向入門4~コンストラクタ~ PHPでオブジェクト指向入門5~デストラクタ~ PHPでオブジェクト指向入門6~静的メソッド~ PHPでオブジェクト指向入門7~静的プロパティ~ PHPでオブジェクト指向入門8~クラス定数~ 他カテゴリと混在のもの .htaccessで拡張子htmlのままphpを実行させる MySQLであいまい検索パターンマッチの仕方(Like句の使い)初級編 内容制作編 更新機能を作ってみる。 MySQLでログインとデータベース作成とユーザ作成 MySQLでテーブル作成1 MySQLでテーブル作成2 jQueryで日付入力フォームを作る phpでMySQLへフォームを使って挿入 PHPとMySQLでデータの取得 PHPとMySQLを使いGETメソッドで受け取ったデータを取得&表示 PHPとMySQLを使って更新情報の再編集ページを作る 再編集ボタンからきた編集ページを作る PHPとMySQLで削除ボタンからきた削除ページを作る 画像アップロード機能を作ってみる。 MySQLとPHPとPDOを使い画像アップロードと挿入~プロトタイプ編~ ~画像アップロード~テーブル作成1 ~画像アップロード~PHPとMySQLで画像のアップロード いつか作ってみたいもの。 PHPでSessionファイルの作成 セッションファイルを使った投稿システム セキュリティ CSRFの仕組み アルゴリズム プログラムにおけるフローチャートとは??
https://w.atwiki.jp/yasrun/pages/203.html
BACK 日本語をINSERTしたら文字化けした! MySQLがどの文字コードを扱う設定か確認する。 status または show variables like character_set% ; また、データベースがどの文字コードを扱う設定か確認する。 show create database DB名; ~ DEFAULT CHARACTER SET latin1 ~ なんて表示されたならば、ラテン1で設定されているということなので、SJISなりUTF8なりに変更する。 alter database DB名 default character set utf8 ; ※ utf-8 などのようにハイフンを入れてはだめ。 《参考》 MySQL 文字化けを防ぐ、文字コードの確認と設定 | 渋谷生活 http //ext.omo3.com/linux/mysql_character_set.html
https://w.atwiki.jp/nicepaper/pages/329.html
攻撃方法を知っておかないとセキュリティは保てないということで、自分でシステムを作り自分で攻撃してみます。 悪用は厳禁です。攻撃方法は各自学習してみてください。12月7日記事 目次 テーブル作成 mysql_queryという昔のクエリ方法を使う コード 攻撃方法 色々なセキュリティ対策 テーブル作成 DDL CREATE TABLE Vul_account( id INT NOT NULL AUTO_INCREMENT, email VARCHAR(255) NOT NULL, passwd VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, PRIMARY KEY(id), INDEX multi(email,passwd) ) DML INSERT INTO Vul_account(email,passwd,name) VALUES( hoge@hoge.com , password , taro ); INSERT INTO Vul_account(email,passwd,name) VALUES( fuga@hoge.com , password , hanako ); INSERT INTO Vul_account(email,passwd,name) VALUES( piyo@hoge.com , password , jiro ); INSERT INTO Vul_account(email,passwd,name) VALUES( foo@hoge.com , password , saburo ); mysql_queryという昔のクエリ方法を使う 今では 非推奨 となっており、PDOを使う方法が推奨されています。 コード ログインフォームを作り、IDとPASSWORDが一致していれば、ログインする仕組みを作る。 index.php ?php require ( config.php ); $link = mysql_connect($db_host, $db_user, $db_password); mysql_select_db($db_name) or die(mysql_error()); $result = mysql_query( set character set utf8 ) or die(mysql_error()); $message = NULL; if (isset($_POST[ submit ])) { $sql = "SELECT * FROM Vul_account WHERE email = " . $_POST[ id ] . " AND passwd = " . $_POST[ pass ] . " "; //パスワード認証のクエリ print $sql; //どんなクエリが投げられているかを見るために残しておきます。 $result = mysql_query($sql); //クエリ投げる $user = mysql_fetch_array($result); //認証できた場合受け取る //print_r($user); if ($user == NULL) { $message = IDまたはパスワードが違います。 ; } else { session_set_cookie_params(60 * 1); //1分間のlifetime session_start(); $_SESSION["name"] = $user["name"]; header("Location home.php"); //ホーム画面へリダイレクト } } ? !DOCTYPE HTML html head meta charset="utf-8" link rel="stylesheet" type="text/css" href="../reset.css" link rel="stylesheet" type="text/css" href="style.css" title SQLインジェクションしてみる /title /head body form action="index.php" method="post" ul li email input type="text" name="id" /li li PASSWORD input type="password" name="pass" /li li input type="submit" name="submit" value="ログイン" /li /ul /form ?php echo $message; ? /body /html home.php ?php session_start(); ? !DOCTYPE HTML html head meta charset="utf-8" link rel="stylesheet" type="text/css" href="../reset.css" link rel="stylesheet" type="text/css" href="style.css" title ホーム画面 /title /head body p ?php echo $_SESSION["name"] ? さんこんにちは。 /p /body /html 攻撃方法 メールアドレスやpasswordというパスワードを知らなくてもログインすることができます。各自調べてみてください。 色々なセキュリティ対策 PDOを使う 生パスワードは格納しない。何かでハッシュ化する saltを設ける
https://w.atwiki.jp/japanesehiphop/pages/692.html
・MEMBER MURO TWIGY P.H.FRON MASAO DJ GO ・ANALOG [SINGLE] 1994 RAPPERZ ARE DANGER 1995 DON'T TURN OFF YOUR LIGHT [WORKS] 1993 OMNIBUS #1 +玄人はだし+(promo) - V.A. 1997 STREET LIFE - MURO 2004 MIRROR BALL 2004 - GORE-TEX 2017 READY GO! - DJ YAS
https://w.atwiki.jp/yasrun/pages/202.html
DBがUTF-8だとWindowsのコマンドプロンプトで文字化けする~;; DBをUTF-8で運用する。DBを利用する側のWEBアプリケーションもUTF-8で構築する。 よくある話です。 で、mysqlコマンドでデータベースに接続して、select * from テーブル名 とかしてテーブルの内容を確認する。 文字化けして表示される。 よくある話です。 ★ ★ ★ データベースの設定を確認するため、 show variables like character_set% ; してみます。↓こんな感じに表示されたりします。 +--------------------------+--------------------------------+ | Variable_name | Value | +--------------------------+--------------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | C \xampp\mysql\share\charsets\ | +--------------------------+--------------------------------+ ★ ★ ★ コマンドプロンプトがUTF-8に対応していないから悪いんだ! やい貴様!UTF-8に対応しろ! …実はすでに対応しているんですねぇ。 マウスで設定はできないけど、コマンドで chcp 65001 と打ち込めば、UTF-8になります。 あるいは次のような内容のバッチファイル(ファイル名は utf8cmd.bat とかにする)を作って、そいつでcmdを起動します。 %SystemRoot%\system32\cmd.exe /f on /k "chcp 65001" 《参考》 文字コードの設定(CHCP) - ウィンドウの操作 - コマンドプロンプトの使い方 http //www.adminweb.jp/command/display/index5.html コマンドプロンプトでUTF-8の文字を表示する - サンプルコードによるPerl入門 http //d.hatena.ne.jp/perlcodesample/20080706/1215291523 ★ ★ ★ …と、ここまでは同じような悩みを抱えた方はGoogle検索してなんとかたどりつく解答ではないでしょうか。 実はこの話には続きがあって、UTF-8対応にはなったけど、結局表示が文字化けする。って話。 理由は、フォントの選択が日本語に対応していないものになっているから。これもぐぐればよく出てきます。 じゃあフォント変更すりゃいいじゃん、ってプロパティをいじろうとすると、なんと日本語フォントが選択できない状態。 なんとかならないかなー。 って、探すと「レジストリをいじればいいよ」って話が見つかるはずです。 《参考》 BLUEPIXY日記 コマンドプロンプト(cmd.exe)でUTF-8を表示する方法 http //blog.livedoor.jp/p-1956050/archives/51426167.html でもこれ、どういうわけかやってもうまくいかないんですよね。 何が悪いんだろう… ★ ★ ★ mysqlコマンドに何かnkf的なフィルタをかませられないかな?とか もはやこうなったら独自コマンドプロンプトをC#かなんかで作成するしかない!とか いろいろ考えましたが…。 こと、今回のmysqlに関しては以下の手順で回避できることがわかりました。 character_set_client, character_set_connection, charcter_set_resultの3パラメータをsjisに変更する。 set character_set_client= sjis ; set character_set_connection= sjis ; set character_set_results= sjis ; きちんと変更されていることを確認する。 mysql show variables like character_set% ; +--------------------------+-------------------------------------+ | Variable_name | Value | +--------------------------+-------------------------------------+ | character_set_client | sjis | | character_set_connection | sjis | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | sjis | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | C \xampp\mysql\share\charsets\ | +--------------------------+-------------------------------------+ 8 rows in set (0.00 sec) 日本語が入っているテーブルをSELECTしてみる。 当方の環境(Windows7 SP1, MySQL 5.5.16(XAMPP1.7.7のもの))ではこれで文字化けせずにSELECTできました。 まっ、phpMyAdmin使えばー?って言われそうですが、まあいいじゃないですか。 ちなみに上記設定、mysqlコマンドを一旦抜けてもう一度接続すると、 (環境や設定にもよるかもしれませんが、少なくとも当方の環境では) 元に戻っちゃってます。 接続する都度変更しなければならないです。 多分これも、それが面倒であればバッチファイルかなんか作れば解決すると思いますが。 サーバの設定をいじっちゃいけない現場とかでは逆にいいかも。
https://w.atwiki.jp/yasrun/pages/192.html
BACK PHPからの実行で文字化け UTF-8に設定してあるDBからPHPで値を取得して表示させたら、「???」になってしまう場合。 リンクリソースに対して文字コードをセットする。 $link = mysql_connect("localhost", "id", "password"); mysql_set_charset("utf8", $link); 参考 ■さぼてん PHP+MySQL+UTF-8で文字化け対策 http //saboten009.blogspot.com/2008/01/phpmysqlutf-8.html